#include "FileConnector.h"

// 获取商品图片
QByteArray FileConnector::getProductImage(const int &productId)
{
    // 构造图片文件路径
    QString imagePath = "product_image/" + QString::number(productId) + ".png";

    // 检查文件是否存在，如果不存在则使用默认图片0.png
    if (!QFile::exists(imagePath))
    {
        imagePath = "product_image/0.png";
    }

    QImage image(imagePath);

    if (image.isNull())
    {
        qDebug() << "无法加载图片：" << imagePath;
        return QByteArray();
    }
    else
    {
        QByteArray imageData;
        QBuffer buffer(&imageData);
        buffer.open(QIODevice::WriteOnly);
        // 将图片转换为字节数组
        if (!image.save(&buffer, "PNG"))
        {
            // 如果转换失败，返回空字节数组
            qDebug() << "无法将图片转换为字节数组。";
            return QByteArray();
        }
        return imageData;
    }
}

// 获取用户图片
QByteArray FileConnector::getUserImage(const int &userId)
{
    // 构造图片文件路径
    QString imagePath = "user_avatar/" + QString::number(userId) + ".png";

    // 检查文件是否存在，如果不存在则使用默认图片0.png
    if (!QFile::exists(imagePath))
    {
        imagePath = "user_avatar/0.png";
    }

    QImage image(imagePath);

    if (image.isNull())
    {
        qDebug() << "无法加载图片：" << imagePath;
        return QByteArray();
    }
    else
    {
        QByteArray imageData;
        QBuffer buffer(&imageData);
        buffer.open(QIODevice::WriteOnly);
        // 将图片转换为字节数组
        if (!image.save(&buffer, "PNG"))
        {
            // 如果转换失败，返回空字节数组
            qDebug() << "无法将图片转换为字节数组。";
            return QByteArray();
        }
        return imageData;
    }
}

// 添加用户图片
bool FileConnector::addUserImage(const int &userId, const QByteArray &imageData)
{
    // qDebug() << "imageData: " << imageData;
    // 构造图片文件路径
    QString imagePath = "user_avatar/" + QString::number(userId) + ".png";

    // 使用QBuffer加载图片数据
    QBuffer buffer;
    buffer.setData(imageData);
    buffer.open(QIODevice::ReadOnly);

    // 加载图片数据为QImage
    QImage image;
    if (!image.load(&buffer, "PNG"))
    {
        qDebug() << "图片数据加载失败。";
        return false;
    }

    // 创建目录（如果不存在）
    QDir dir("user_avatar");
    if (!dir.exists())
    {
        dir.mkpath(".");
    }

    // 将图片保存到磁盘上
    QFile file(imagePath);
    if (!file.open(QIODevice::WriteOnly))
    {
        qDebug() << "无法打开文件以保存图片：" << imagePath;
        return false;
    }
    if (!image.save(&file, "PNG"))
    {
        qDebug() << "保存图片失败：" << imagePath;
        return false;
    }
    return true;
}
